//0 9 20 -1 -1 15 7 -1 -1 -1 -1 3 2 传递悄悄话
// 说白了, 就是dfs, 一直到底, 计算最大时间
const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
let initArr = [];
rl.on("line", (line)=>{
    if(initArr.length === 0) {
        initArr = line.trim().split(" ").map(Number)
        console.log(getResult(initArr))
        // clear
        initArr.length = 0
    }
})

function getResult(initArr) {
    let ans = []

    dfs(0, 0, ans, initArr)

    return Math.max(...ans)

}

function dfs(start, count, ans, initArr) {
    let left = 2 * start + 1
    let right = 2 * start + 2
    let arr = []
    if(initArr[left] !== -1 && left < initArr.length) {
        arr.push(left)
    }
    if(initArr[right] !== -1 && right < initArr.length) {
        arr.push(right)
    }

    ans.push(count + initArr[start])
    for (const num of arr) {
        dfs(num, count + initArr[start], ans, initArr)
    }
}